#ifndef LUTWXPANELVIEW_H
#define LUTWXPANELVIEW_H

#include <iostream>
#include <vector>
#include <boost/shared_ptr.hpp>
#include <wx/panel.h>
#include <wx/sizer.h>
#include <wx/slider.h>
#include <wx/statbmp.h>
#include <wx/grid.h>


//#include "../../core/LutBound.h"
#include "liblut/core/LutModel.h"

class LutWxPanelView: public wxPanel
{
  public:
    LutWxPanelView(wxWindow* parent,
                   wxWindowID id = wxID_ANY,
                   const wxPoint& pos = wxDefaultPosition,
                   const wxSize& size = wxDefaultSize,
                   long style = wxTAB_TRAVERSAL);

  private:
    void initBitmapButton(wxSizer* psizer);
    boost::shared_ptr<LutModel> m_ptrLut;
};


class LutWxBitmapView: public wxPanel
{
  public:
    LutWxBitmapView(wxWindow* parent,
                   wxWindowID id = wxID_ANY,
                   const wxPoint& pos = wxDefaultPosition,
                   const wxSize& size = wxDefaultSize,
                   long style = wxTAB_TRAVERSAL);
  protected:
    wxImage *m_image;
    wxStaticBitmap *m_image_ctrl;
    boost::shared_ptr<LutModel> m_ptrLut;

};


class LutWxGridView: public wxPanel
{
public:
  LutWxGridView(wxWindow* parent,
                 wxWindowID id = wxID_ANY,
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& size = wxDefaultSize,
                 long style = wxTAB_TRAVERSAL);
  private:
   wxGrid *m_grid;
   boost::shared_ptr<LutModel> m_ptrLut;

};

#endif // LUTWXPANELVIEW_H
